This section is intended to provide a background or context to the invention that is recited in the claims. The description herein may include concepts that could be pursued, but are not necessarily ones that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, what is described in this section is not prior art to the description and claims in this application and is not admitted to be prior art by inclusion in this section.
Video coding standards include ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 or ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual and ITU-T H.264 (also know as ISO/IEC MPEG-4 AVC). In addition, there are currently efforts underway with regards to the development of new video coding standards. One such standard under development is the scalable video coding (SVC) standard, which will become the scalable extension to H.264/AVC. Another such effort involves the development of China video coding standards.
SVC can provide scalable video bitstreams. A portion of a scalable video bitstream can be extracted and decoded with a degraded playback visual quality. Currently, a scalable video bitstream contains a non-scalable base layer and one or more enhancement layers. An enhancement layer may enhance the temporal resolution (i.e. the frame rate), the spatial resolution, or the quality of the video content represented by the lower layer or part thereof. In some cases, data of an enhancement layer can be truncated after a certain location, even at arbitrary positions, and each truncation position can include some additional data representing increasingly enhanced visual quality. Such scalability is referred to as fine-grained (granularity) scalability (FGS). In contrast to FGS, the scalability provided by a quality enhancement layer that does not provide fined-grained scalability is referred as coarse-grained scalability (CGS). Base layers can be designed to be FGS scalable as well.
The mechanism to provide temporal scalability in the most recent SVC specification involves the “hierarchical B pictures coding structure,” which is essentially similar to current advanced video coding (AVC). This feature is fully supported by AVC, and the signaling portion can be implemented by using sub-sequence related supplemental enhancement information (SEI) messages.
For mechanisms to provide spatial and CGS scalabilities, a conventional layered coding technique, similar to the technique used in earlier standards, is used with a number of new inter-layer prediction methods. Data that could be inter-layer predicted includes intra texture, motion and residual. Single-loop decoding is enabled by a constrained intra texture prediction mode, whereby the inter-layer intra texture prediction can be applied to macroblocks (MBs) for which the corresponding block of the base layer is located inside intra MBs. At the same time, those intra MBs in the base layer use constrained intra prediction. In single-loop decoding, the decoder needs to perform motion compensation and full picture reconstruction only for the scalable layer desired for playback (referred to as the desired layer), thereby greatly reducing the decoding complexity. All of the layers other than the desired layer do not need to be fully decoded because all or part of the data of the MBs not used for inter-layer prediction (be it inter-layer intra texture prediction, inter-layer motion prediction or inter-layer residual prediction) is not needed for reconstruction of the desired layer.
The spatial scalability has been generalized to enable the base layer to be a cropped and zoomed version of the enhancement layer. The quantization and entropy coding modules were adjusted to provide FGS capability. The coding mode is referred to as progressive refinement, wherein successive refinements of the transform coefficients are encoded by repeatedly decreasing the quantization step size and applying a “cyclical” entropy coding akin to sub-bitplane coding.
The scalable layer structure in the current draft SVC standard is characterized by three variables, referred to as temporal_level, dependency_id and quality_level. temporal_level is used to indicate the temporal scalability or frame rate. A layer comprising pictures of a smaller temporal_level value has a smaller frame rate than a layer comprising pictures of a larger temporal_level. dependency_id is used to indicate the inter-layer coding dependency hierarchy. At any temporal location, a picture of a smaller dependency_id value may be used for inter-layer prediction for coding of a picture with a larger dependency_id value. quality_level is used to indicate FGS layer hierarchy. At any temporal location and with an identical dependency_id value, an FGS picture with quality_level value equal to QL uses the FGS picture or base quality picture (i.e., the non-FGS picture when QL−1=0) with quality_level value equal to QL−1 for inter-layer prediction.
One design goal of SVC is to maintain the backward compatibility with AVC. In other words, the base layer should be compliant with AVC. To realize this goal, two new NAL unit types that are reserved in AVC are used for the coded slices in enhancement layers. The three variables—temporal_level, dependency_id and quality_level—among other information (including simple_priority_id and discardable_flag) are signaled in the bitstream for the enhancement layers. simple_priority_id indicates a priority of the NAL unit, and discardable_flag indicates whether the NAL unit is used for inter-layer prediction by any layer with a higher dependency_id value.
Conventional video coding standards have specified a structure for an elementary bitstream, i.e., a self-containing bitstream that decoders can parse. The bitstream has comprised several layers, typically including several of the following: a sequence layer, a group of pictures (GOP) layer, a picture layer, a slice layer, a macroblock layer, and a block layer. The bitstream for each layer typically includes a header and associated data.
The syntax for H.264/AVC and SVC coding standard includes Network Abstraction Layer (NAL) units. A stream of NAL units does not form an elementary bitstream as such because there are no start codes in NAL units. Instead, NAL units have to be framed with start codes according to Annex B of the H.264/AVC coding standard to form an elementary bitstream.
The H.264/AVC coding standard contains headers at the slice layer and below, but it does not include picture, GOP, or sequence headers. Instead, a concept of a parameter set replaces such headers. There are two types of parameter sets: sequence parameter sets and picture parameter sets. In the H.264/AVC coding standard, only one sequence parameter set is active in a coded video sequence, i.e. between an instantaneous decoding refresh (IDR) picture, inclusive, to the next IDR picture, exclusive. Only one picture parameter set is active within a picture, but a new picture parameter set may be activated per each picture. In SVC, each value of dependency_id may be dedicated its own sequence parameter set.
An access unit according to the H.264/AVC coding standard comprises one primary coded picture, zero or more redundant coded pictures, and zero or more auxiliary coded pictures. In some systems, detection of access unit boundaries can be simplified by inserting an access unit delimiter NAL unit into the bitstream. An access unit according to SVC may comprise one primary coded picture for the base layer and may contain multiple enhanced coded pictures, but at most one enhanced coded picture that is not a redundant coded picture per each unique combination of dependency_id, temporal_level, and quality_level.
The base layer of SVC streams is typically AVC-compliant, i.e. AVC decoders can decode the base layer of an SVC stream and ignore SVC-specific data. This feature has been realized by specifying coded slice NAL unit types that are specific to SVC and were reserved for future use in AVC and required to be skipped according to the AVC specification.
An access unit delimiter is a NAL unit specified in H.264/AVC that may be inserted as the first NAL unit of an access unit. The access unit delimiter contains the picture coding type of the primary picture of the access unit.
The variables temporal_level, dependency_id, quality_level, simple_priority_id and discardable_flag are signaled for SVC enhancement layers but not for the base layer. Instead, the variables are either not specified (discardable_flag) or are derived as equal to zero (the other four variables) for the AVC compatible base layer according to the SVC specification. However, this causes a problem that important information cannot be signaled for the base layer as efficiently as for enhancement layers (the AVC compatible base layer always has dependency_id and quality_level equal to 0). First, the temporal scalability hierarchy of a base layer picture, i.e. which values of temporal_level pertain to AVC base layer using the sub-sequence feature, cannot be signaled. Second, it cannot be signaled whether a base layer picture or a part of a base layer picture is used for inter-layer prediction by any layer with a higher dependency_id value, i.e. the value of discardable_flag. Third, a desired priority value for a base layer picture, i.e. the value simple_priority_id, cannot be signaled.
Although there are potential methods to effectual some of this signaling, each has its own drawbacks. For example, although the Sub-sequence information Supplemental Enhancement Information (SEI) message in AVC could be used to signal the temporal scalability hierarchy of the base layer, the message contains a number of syntax elements in addition to temporal_level (corresponding to the subseq_layer syntax element in the Sub-sequence information SEI message), leading to potential inefficiency in terms of bitrate. Conventional video coding standards use a picture header to separate coded pictures and to carry picture-specific syntax elements.